package com.zhouqinuan.spring.cloud.develop.framework.base.util;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.BeanUtils;

import lombok.extern.slf4j.Slf4j;

/**
 * 快捷映射类
 */
@Slf4j
public class BeanUtil {

    /**
     * 转换列表数据到新的对象列表
     *
     * @param dataList 数据列表
     * @param target   类型
     * @param <T>      类
     * @return 列表
     */
    public static <T> List<T> mapToList(List<?> dataList, Class<T> target) {
        List<T> result = new ArrayList<>();

        if (dataList != null) {
            for (Object orginData : dataList) {
                try {
                    T desData = target.newInstance();
                    BeanUtils.copyProperties(orginData, desData);
                    result.add(desData);
                } catch (Exception e) {
                    log.error("转换数据失败:{}", e);
                }
            }
        }

        return result;
    }

    /**
     * 转换属性为新的对象
     *
     * @param orginData 原始数据
     * @param target    目标对象
     * @param <T>       类
     * @return 数据
     */
    public static <T> T mapToObject(Object orginData, Class<T> target) {
        if (orginData != null) {
            try {
                T desData = target.newInstance();
                BeanUtils.copyProperties(orginData, desData);
                return desData;
            } catch (Exception e) {
                log.error("转换数据失败:{}", e);
            }
        }
        return null;
    }

}
